#include "m0wig.h"
#include "ui_m0wig.h"
#include<QDebug>
#include"mqtthandler.h"
#include"globalval.h"
#include<QJsonArray>
#include<QJsonDocument>
#include<QJsonObject>
#include "modbuswig.h"

M0Wig::M0Wig(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::M0Wig)
{
    ui->setupUi(this);
    ui->pushButton_3->setText("关闭/退出");
}

M0Wig::~M0Wig()
{
    delete ui;
}
/*
void M0Wig::rece_mqtt(const QByteArray &payload)   //接收json数据包
{
        qDebug()<<payload;
        QString jsonString=payload;
        QByteArray jsonByteArray = jsonString.toUtf8();

        // 使用QJsonDocument解析JSON数据
        QJsonParseError parseError;
        QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonByteArray, &parseError);

        // 检查解析是否成功
        if (parseError.error != QJsonParseError::NoError) {
            qWarning() << "Failed to parse JSON:" << parseError.errorString();
            return;
        }

        // 获取JSON对象
        QJsonObject object = jsonDoc.object();

        // 打印JSON对象中的值
//        qDebug() << "Temp:" << object["temperature"].toInt();
//        qDebug() << "Humi:" << object[" humidity"].toInt();
//        qDebug() << "Light:" << object["light"].toInt();
        ui->temp_lcd->display(object["temperature"].toInt());
        ui->humi_lcd->display(object[" humidity"].toInt());
        ui->light_lcd->display(object["light"].toInt());
}
*/
void M0Wig::rece_mqtt(const QByteArray &payload) // 接收json数据包
{
    qDebug() << payload;

    // 使用QJsonDocument解析JSON数据
    QJsonParseError parseError;
    QJsonDocument jsonDoc = QJsonDocument::fromJson(payload, &parseError);

    // 检查解析是否成功
    if (parseError.error != QJsonParseError::NoError) {
        qWarning() << "Failed to parse JSON:" << parseError.errorString();
        return;
    }

    // 获取JSON对象
    QJsonObject object = jsonDoc.object();

    // 设置小数点位数和模式
    ui->temp_lcd->setDecMode();  // 确保是十进制模式
    ui->humi_lcd->setDecMode();
    ui->light_lcd->setDecMode();

    // 根据需要调整小数点位数和总位数
    int decimalPlaces = 1;  // 例如，保留一位小数
    ui->temp_lcd->setSmallDecimalPoint(true);  // 如果您的 LCD 支持小数点
    ui->temp_lcd->setDigitCount(6);  // 总共6位数字，包括小数部分
    ui->humi_lcd->setSmallDecimalPoint(true);
    ui->humi_lcd->setDigitCount(6);
    ui->light_lcd->setSmallDecimalPoint(true);
    ui->light_lcd->setDigitCount(6);

    // 解析并显示 double 类型的数据
    double tempValue = object["temperature"].toDouble();
    double humiValue = object["humidity"].toDouble();
    double lightValue = object["light"].toDouble();
    /*
    double LED1 = object["LED1"].toDouble();
    double LED2 = object["LED2"].toDouble();
    double LED3 = object["LED3"].toDouble();
    */

    // 打印调试信息
    qDebug() << "Updating temperature as double:" << tempValue;
    qDebug() << "Updating humidity as double:" << humiValue;
    qDebug() << "Updating light as double:" << lightValue;

    // 更新 LCD 显示
    ui->temp_lcd->display(tempValue);
    ui->humi_lcd->display(humiValue);
    ui->light_lcd->display(lightValue);



    // 打印确认值是否正确显示
    qDebug() << "After updating, temperature displayed as:" << ui->temp_lcd->value();
    qDebug() << "After updating, humidity displayed as:" << ui->humi_lcd->value();
    qDebug() << "After updating, light displayed as:" << ui->light_lcd->value();
}
void M0Wig::on_pushButton_3_clicked()
{
    emit close_ui_Signal();//发送关闭页面的信号
}

void M0Wig::on_pushButton_clicked()  //刷新按钮的槽函数
{
    QString type_text=ui->comboBox->currentText();
    if(type_text=="循环模式")
    {
//        qDebug()<<type_text;
        emit mode_op_Signal(type_text);
    }
    else if(type_text=="对比模式")
    {
//        qDebug()<<type_text;
        emit mode_op_Signal(type_text);
    }
    else if(type_text=="刷新模式")
    {
//        qDebug()<<type_text;
        emit mode_op_Signal(type_text);
    }
}

void M0Wig::on_Stop_Button_clicked()
{
    emit mode_op_Signal("停止模式");
}
